`ifndef MYCPU_H
    `define MYCPU_H

    `define FS_TO_DS_BUS_WD 73
    `define DS_TO_ES_BUS_WD 179
    `define DS_TO_FS_BUS_WD 35
    `define ES_TO_MS_BUS_WD 134
    `define MS_TO_WS_BUS_WD 93
    `define MS_TO_ES_BUS_WD 2
    `define WS_TO_RF_BUS_WD 38
    `define WS_TO_FS_BUS_WD 33
    `define WS_TO_ES_BUS_WD 20
    `define ES_CONFLICT_BUS_WD 6
    `define MS_CONFLICT_BUS_WD 40

    /* cp0 address */
    `define CR_INDEX    8'b00000000
    `define CR_ENTRYLO0 8'b00010000
    `define CR_ENTRYLO1 8'b00011000
    `define CR_BADVADDR 8'b01000000
    `define CR_COUNT    8'b01001000
    `define CR_ENTRYHI  8'b01010000
    `define CR_COMPARE  8'b01011000
    `define CR_STATUS   8'b01100000
    `define CR_CAUSE    8'b01101000
    `define CR_EPC      8'b01110000

    /* excode */
    `define EX_INT  5'h00
    `define EX_MOD  5'h01
    `define EX_TLBL 5'h02
    `define EX_TLBS 5'h03
    `define EX_ADEL 5'h04
    `define EX_ADES 5'h05
    `define EX_SYS  5'h08
    `define EX_BP   5'h09
    `define EX_RI   5'h0a
    `define EX_OV   5'h0c

    `define EXCEPTION_ENTRY1 32'hBFC00200
    `define EXCEPTION_ENTRY2 32'hBFC00380

`endif
